<?php
/**
 * 视图过滤器
 *
 * @package if
 * @subpackage view
 * @since 1.0
 */
class IViewFilter extends IActionFilter {
	/**
	 * 动作之后事件监听
	 *
	 * @param IController $controller 控制器
	 * @since 1.0
	 */
	function _after(&$controller) {	
		$ret = $controller->action()->ret();
		//如果是IView对象
		if (is_object($ret) && if_is_instance_of($ret, "IView")) {
			$controller->display($ret);
		}
		//如果是数组，则视为跳转
		else if (is_array($ret)) {
			$actionName = isset($ret["action"])?$ret["action"]:IController::defaultAction();
			if (!isset($ret["controller"])) {
				$ret["controller"] = strstr($actionName, ".")?null : $controller->name();
			}
			$params = isset($ret["params"])?$ret["params"]:null;
			if (in_array("forward", $ret)) {
				$controller->forward($ret["controller"], $actionName, $params);
			}
			else if (isset($ret["url"])) {
				$controller->redirectUrl($ret["url"]);
			}
			else {
				$controller->redirect($ret["controller"], $actionName, $params);
			}
		}
		//如果为null，则显示默认的视图
		else if (is_null($ret)) {
			$controller->display();
		}
	}
}

?>